The Transmission Control Protocol (TCP) is a protocol for transmitting data between points in a communication network. A key feature of TCP is its reliability, as it includes delivery validation mechanisms and error checking. TCP is typically used by Web browser applications for connecting with servers.
A TCP connection is established end-to end. For example, it may be established to send data from a TCP server to a client device. In this case, the TCP server will typically measure the Round Trip Time (RTT) for sending data to the client, and uses that information to establish an optimal transmission rate. Other factors may influence the transmission rate, such as the transmission window. The transmission window is a measure of how many packets can be outstanding without receiving an acknowledgement that they have been received.
As shown in FIG. 1, in order to address long RTTs, a TCP proxy can be introduced. This breaks the TCP connections into two legs, which shortens the RTT. In FIG. 1, a User Equipment (UE) 1 connects via a Radio Access Network (RAN) node to a network. In this example, the RAN node is an eNodeB (eNB) 2. TCP data is sent via a Serving Gateway (SGW) 3 and a Packet Data Network Gateway (PGW) 4 from a TCP proxy 5. One of the TCP connection legs is therefore between the TCP proxy 5 and the UE 1
The TCP proxy 5 also connects with as TCP server located in a service network or in the Internet 6. The other TCP connection leg is therefore between the TCP proxy 5 and the TCP server.
A feature of TCP is that it includes a congestion avoidance mechanism. Different types of congestion avoidance mechanisms can be used, but they essentially rely on reducing the transmission rate of data in the event that congestion is detected. This means that if congestion is experienced in part of the network, leading to packet loss or unacceptably long RTTs, then the transmission rate is reduced. This has the effect of reducing the congestion in the network and, in most cases, allowing the transmission rate to be gradually increased once more.
During congestion avoidance, the end-user's Quality of Experience (QoE) is reduced, because the transmission rate of data is reduced. It is therefore desirable to avoid having to use a congestion avoidance mechanism unless necessary.